1. Field of the Invention
The invention relates generally to computer systems and, more particularly, to computer systems that utilize the SuperSpeed USB Universal Serial Bus.
2. Background Information
Computer systems are normally composed of one or more central processing units (CPUs), a memory system, and a system bus, which is used for connecting peripherals of various kinds to the system. A PCIe bus or variants thereof have served as the system bus. Traditional system busses are register-oriented rather than message oriented. The busses have performance benefits, but also cause certain problems for power management and battery-powered systems.
The SuperSpeed USB Universal Serial Bus (“USB”), USB 3.0, is fast enough to allow use as a system bus. Further, with the introduction of new class protocols such as Network Control Model (for gigabit Ethernet), Audio Video Class (for external display), and USB Attached SCSI (for mass storage), the higher level signaling protocols of USB have the capability to deliver very good performance, while also providing superior power management. In addition, the system cost can be reduced by eliminating the PCIe bus, which becomes unnecessary. The xHCI host controller architecture streamlines the delivery of USB data from class drivers to the USB, by presenting the semantics of a “USB Transfer” directly to the system software.
There remains one roadblock. With current USB 3.0 host controllers based on the “xHCI” architecture, the operating system software must translate the low-level protocol offered by the “xHCI” host controller into the higher level protocols required by the system devices. This overhead, which is not needed for PCIe and other register-based bus architectures, can result in reduced throughput and increased power usage. In addition, higher level protocol data must be encapsulated by software into USB data transfers for transmission, and the encapsulated data must be decoded upon receipt. The encoding and/or decoding generally entails extra copying of data, or a high level of complexity in system software. With limited exceptions, the xHCI architecture is not able to accelerate data transfer in a class-specific way. Accordingly, system software still must, in effect, perform marshaling and demarshaling. This extra work wastes CPU time and battery power, and reduces the effectiveness of USB 3.0 if used as a system bus, especially in a virtual machine environment.